package com.jcx.ldzj.service;

import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jcx.ldzj.dto.UserInfoDTO;
import com.jcx.ldzj.entity.UserInfo;

import javax.servlet.http.HttpSession;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author Ð¡Ìì
 * @since 2021-01-20
 */
public interface IUserInfoService extends IService<UserInfo> {

    /**
     * 用户详情
     * @param id
     * @return
     */
    UserInfo getUserById(String id);

    /**
     * 获取当前登录用户的信息
     * @return
     */
    R<UserInfo> getUser();
    /**
     * 新增用户
     * @param userInfo
     * @return
     */
    R addUser(UserInfoDTO userInfo);


    /**
     * 修改用户信息
     * @param userInfo
     * @return
     */
    R updateUser(UserInfoDTO userInfo);

    /**
     * 查询该用户是否存在，必传值：用户名称，非必传表id
     * @param userInfo
     * @return
     */
    R findUser(UserInfoDTO userInfo);


    /**
     * 重置密码
     * @param userName 新密码
     * @return
     */
    R resetPassword(String userName);
    /**
     *修改重置密码密码
     * @param emailCode 老密码
     * @param newPassword 新密码
     * @return
     */
    R updatePassword(HttpSession session, String userName, String emailCode, String newPassword);

    /**
     *  根据老密码修改密码
     * @param oldPassword 老密码
     * @param newPassword 新密码
     * @return
     */
    R updatePwdOld(String oldPassword, String newPassword);

    /**
     * @param userName
     * @param passWord
     * @return
     */
    R<String> apassLogin(String userName, String passWord);

    /**
     * 判断该用户是否为管理员
     * @param userName
     * @return
     */
    boolean isAdmin(String userName);

    /**
     * 检查验证码是否正确
     * @param verificationCode
     * @param result
     * @return
     */
    R verificationCode(String verificationCode, Object result);

    /**
     * 删除用户
     * @return
     */
    R deleteUser(String id);
    /**
     * 批量修改用户的部门信息
     * @param deptId
     * @return
     */
    R updateUserDept(String deptId,String deptName,String oldDeptName);
}
